Java Web
HTTP协议有哪些组成部分?
- 请求:
- 请求行:
请求方式 请求url 请求协议/版本
- 请求头:
请求头名称: 请求头值
,客户端浏览器告诉服务器一些信息,如User-Agent
本机OS、浏览器信息Referer
请求来自哪里(用于防盗链,统计工作)
- 请求体(GET没有、POST有)
- 请求行:
- 响应:
- 响应行:
协议/版本 响应状态码 状态码描述
- 响应头:如
Content-Type
响应体的MIME类型,编码格式; - 响应体
- 响应行:
常见状态码
状态码:服务器告诉客户端浏览器本次请求和响应的一个状态。都是3位数字
- 1xx:服务器接收客户端消息,但没有接受完成,等待一段时间后,发送1xx状态码。很少出现
- 2xx:客户端请求成功。代表:200。很少出现,因为绝大部分都是成功,直接显示响应体内容
- 3xx:重定向。代表:302(重定向),304(访问缓存)
- 4xx:客户端错误。代表如下:
- 400(Bad Request,客户端请求有语法错误,不能被服务器所理解)
- 401(Unauthorized,请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用)
- 403(Forbidden ,服务器收到请求,但是拒绝提供服务)
- 404(请求路径没有对应的资源,输入了错误URL)
- 405:请求方式没有对应的doXxx方法
- 5xx:服务器端错误。代表:
- 500(服务器内部出现异常)
- 503(Server Unavailable,服务器当前不能处理客户端的请求,一段时间后可能恢复正常)
GET 和 POST 的区别
- GET:请求参数在请求行中,在url后且长度有限制。相对不太安全。一般用于获取操作,幂等
- POST:请求参数在请求体中,请求的url长度没有限制的,相对安全。一般用于新增操作,非幂等
Cookie 和 Session 区别
- 相同:都是用来跟踪浏览器用户状态的会话技术
- 区别:
Cookie存储在客户端,存储数据量有限,不安全
Session存储在服务端,存储数据量大,安全。但是过多的Session会占用服务器内存,影响性能。
Session是基于Cookie进行信息处理的
Cookie & Session 生命周期
- Cookie 生命周期默认为关闭浏览器则删除(负数);立即删除(0);写入硬盘并指定存活时间(正数)
- 默认失效时间 30分钟(web.xml配置);Session 生命周期在服务器关闭时失效;session对象调用
invalidate()
立即失效;
Ajax
Asynchronous JavaScript and XML,优点:
- 通过异步模式,可以实现局部刷新,提升了用户体验
- Ajax引擎在客户端运行,减少服务端工作及负载
Servlet 的生命周期
void init(ServletConfig)
:创建Servlet对象后立即执行init方法;一个Servlet在内存中只存在一个对象(==单例==)默认情况下,第一次被访问时,Servlet被创建。修改创建时机
<load-on-startup>
的值为负数,越小优先级越高void service(ServletRequest request, ServletResponse response)
:每次处理请求时都会被调用service方法;void destroy()
:服务器正常关闭,销毁Servlet对象前执行释放资源的方法(只1次);
forward 与 redirect 的区别
- 转发 是服务器行为,一次请求,在地址栏会显示同一URL,而 重定向 是客户端行为,两次请求,会显示不同的URL(302,location)
- 转发 可以用于共享Request数据,而 重定向 不能共享Request数据
- 转发只能用于同一web应用中组件,重定向可以用于任意URL
request.getAttribute()/getParameter()
- getParameter/Map 是获取表单GET、POST提交的参数,返回字符串、Map
- getAttribute和setAttribute是用来在Request域中存取数据的,返回对象
OSI 七层模型
- 物理层:bit流
- 数据链路层:数据帧Frame
- 网络层:数据包package
- 传输层:数据段segment
- 会话层:
- 表示层
- 应用层
TCP/IP 模型
- 链路层:网络连接设备的驱动协议
- 网络层:将传输的数据进行分组,将分组数据发送到目标计算机或者网络
- 传输层:网络通信,TCP、UDP协议等
- 应用层:HTTP协议等